#include "apue.h"

Sigfunc *signal_intr(int signo, Sigfunc *func) {
    struct sigaction sa, osa;

    sa.sa_handler= func;
    sigemptyset(&sa.sa_mask);
    sa.sa_flags= 0;
#ifdef SA_INTERRUPT
    sa.sa_flags |= SA_INTERRUPT;
#endif
    if (sigaction(signo, &sa, &osa) < 0)
        return SIG_ERR;
    return osa.sa_handler;
}
